<h1>v<%= releaseVersion %></h1>

<p class='info-icon'>Be sure to keep up with the latest releases by subscribing to the
    <a href='http://mbtest.org/feed'>ATOM feed</a>.</p>

<p>The focus of this release is revamping the behaviors pipeline to put more control into
the hands of the users. See the <a href='//<%= host %>/docs/api/behaviors'>behaviors</a>
page for the new syntax, which allows complete control over the behaviors pipeline.
The one previous behavior that doesn't compose into a pipeline of post-processing
transformations is <code>repeat</code>, which is now treated as a
<a href='//<%= host %>/docs/api/stubs'>response parameter</a>.</p>

<p class='info-icon'>As always, despite being a syntactically breaking change, there are
strong backwards compatibility enforcements. There is no need for you to upgrade your
scripts to the new syntax; mountebank will continue respecting the old syntax without change.</p>

<h2>New Features</h2>
<ul class='bullet-list'>
    <li>Changed the <a href='//<%= host %>/docs/api/behaviors'>behaviors pipeline</a> into a
    composable pipeline with the user in complete control of the order of operations. Previously,
    some behaviors (like <code>copy</code> and <code>shellTransform</code>) took arrays, which meant
    that some behaviors supported a pipeline and some didn't, and there was no way to control the
    order of operations, meaning you were unable to reason deterministically about what would happen
    if you had both a <code>shellTransform</code> and <code>decorate</code> behavior. To make this
    work, the <code>repeat</code> behavior has been changed to a
    <a href='//<%= host %>/docs/api/stubs'>response parameter</a>.</li>
    <li>Allow the <a href='//<%= host %>/docs/api/behaviors#behavior-decorate'><code>decorate</code> behavior</a>
    access to the imposter's <code>state</code> variable</li>
    <li>Added a new <a href='//<%= host %>/imposters'>community UI</a> to the options for
    manual use.</li>
</ul>

<h2>Bug Fixes</h2>
<ul class='bullet-list'>
    <li>Thanks to Robert Cooper, a fair amount of work was done to resolve intermittent file locking issues
    using the <code>--datadir</code> parameter.</li>
    <li>Clarified docs on creating a custom protocol</li>
    <li>Allow <code>--protofile</code> to use relative and absolute paths if included directly in
    JavaScript (rather than called through the CLI)</li>
</ul>

<h2>Contributors</h2>
<p>Many thanks to the following kind folks for help with this release, either through bug reports,
    suggestions, or direct code contributions:</p>

<ul class='bullet-list'>
    <li>Robert Cooper</li>
    <li>cbrz</li>
</ul>

<h2>Install</h2>

<pre><code>npm install -g mountebank@<%= releaseVersion %></code></pre>

<p>or:</p>

<table>
    <tr>
        <th>Option</th>
        <th>node.js required?</th>
        <th>sudo required?</th>
        <th>links</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>Self-contained archives</td>
        <td>No</td>
        <td>No</td>
        <td style="min-width: 5em;">
            <ul>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-darwin-x64.tar.gz">osx</a></li>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x86.tar.gz">linux x86</a></li>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-linux-x64.tar.gz">linux x64</a></li>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x86.zip">win x86<sup>*</sup></a></li>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-win-x64.zip">win x64<sup>*</sup></a></li>
            </ul>
        </td>
        <td>Simply unpack and run <code>mb</code> from inside</td>
    </tr>
    <tr>
        <td>OS-specific packages</td>
        <td>No</td>
        <td>Yes</td>
        <td>
            <ul>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>.pkg">pkg</a></li>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-<%= releaseVersion %>-1.x86_64.rpm">rpm</a></li>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank_<%= releaseVersion %>_amd64.deb">deb</a></li>
            </ul>
        </td>
        <td>Puts <code>mb</code> at <code>/usr/local/bin</code>, which is generally in the <code>PATH</code>.</td>
    </tr>
    <tr>
        <td>source tarball</td>
        <td>Yes</td>
        <td>No</td>
        <td>
            <ul>
                <li><a href="https://s3.amazonaws.com/mountebank/v<%= releaseMajorMinor %>/mountebank-v<%= releaseVersion %>-npm.tar.gz">mb</a></li>
            </ul>
        </td>
        <td>source tarball if you roll that way.</td>
    </tr>
</table>

<h2 id='windows-path-limitations'>Windows path limitations</h2>

<p><sup>*</sup>mountebank wishes very much for your Windows experience to be hassle-free, but he is simply not qualified to address
    a particular constraint of Windows Explorer.  For legacy reasons, some Windows applications, including most notably Windows Explorer,
    have a maximum number of characters allowed in a path of 260 characters.  As mountebank writes these words, the longest path he
    includes in the zip files is around 175 characters.  The zip file name, which is likely to represent itself as <i>two</i>
    nested directories if you use the defaults to unzip it, will be around 25 characters.  That gives you very little wiggle room.
    If you unzip the file in your users directory, you may very likely get an error because of this constraint.</p>

<p>The following solutions will all work:</p>

<ul class='bullet-list'>
    <li>Unzip to the root of your C: drive (or a similar small path)</li>
    <li>Use <a href='http://www.7-zip.org/'>7zip</a> to unzip the file instead of Windows Explorer</li>
    <li>Use <code>npm</code> to install mountebank instead of the zip file</li>
</ul>
